## The special Gauss-Jordan funtion GJ

from PyM import *

# # Special Gauss-Jordan
# def GJ(S):
#     S.pivot_matrix()
#     for i in range(min(ncols(S),nrows(S))):
#         if S.Piv[i,i] == 0:
#             break
#         l = i+1
#     A = S.Piv[:l,:l]
#     b = S.Piv[:l,l]
#     a = domain(A).solve_pivot_matrix_system(A,b)
#     return a

# Example

F = Zn(101)
n = cardinal(F)-1
k = 50
d = n-k+1
t = d//2
C = PRS(F,k)
e = rd_error_pattern(n,t,F)

S = e * transpose(H_(C))

show(transpose( GJ(hankel_matrix(S))  ))
